﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class ОбновлениеКонфигурации
	{
		////////////////////////////////////////////////////////////////////////////////
		// Вспомогательные процедуры и функции
		// Проверить, что запуск программы выполнен от имени внешнего пользователя
		// и выбросить исключение в этом случае.
		//
		// Параметры
		//  ТекстСообщения  - Строка - текст исключения. Если не задан,
		//                             используется текст по умолчанию.
		//
		// Пример использования:
		//    ПрерватьВыполнениеЕслиАвторизованВнешнийПользователь();
		//    ... далее располагается фрагмент кода, который рассчитывает только на выполнение
		//        из-под "обычного" пользователя.
		//

		public void ПрерватьВыполнениеЕслиАвторизованВнешнийПользователь(/*Знач ТекстСообщения = ""*/)
		{
			/*// В конфигурации не используются внешние пользователи.
*/
			/*// Процедура оставлена для совместимости с БСП
*/
		}
		// Получить глобальные настройки обновления на сеанс 1С:Предприятия
		//

		public object ПолучитьНастройкиОбновления(/**/)
		{
			//Настройки = Новый Структура;
			//Настройки.Вставить("КороткоеИмяКонфигурации", КороткоеИмяКонфигурации());
			//Настройки.Вставить("АдресСервераДляПроверкиНаличияОбновления", АдресСервераДляПроверкиНаличияОбновления());
			//Настройки.Вставить("КаталогОбновлений", КаталогОбновлений());
			//Настройки.Вставить("АдресРесурсаДляПроверкиНаличияОбновления", АдресРесурсаДляПроверкиНаличияОбновления());
			//Настройки.Вставить("КонфигурацияИзменена", КонфигурацияИзменена());
			//Настройки.Вставить("ПроверитьПрошлыеОбновленияБазы", ОбновлениеКонфигурацииУспешно() <> Неопределено);
			//Настройки.Вставить("НастройкиОбновленияКонфигурации", ПолучитьСтруктуруНастроекПомощника());
			//Настройки.Вставить("ЕстьДоступДляОбновления", ПроверитьДоступДляОбновления());
			//Настройки.Вставить("ЕстьДоступДляПроверкиОбновления", ПроверитьДоступДляПроверкиОбновления());
			return null;
		}
		// Вызывается при завершении обновления конфигурации через COM-соединение.
		//
		// Параметры
		//  РезультатОбновления  – Булево – Результат обновления.
		//

		public void ЗавершитьОбновление(/*Знач РезультатОбновления, Знач ЭлектроннаяПочта, Знач ИмяАдминистратораОбновления*/)
		{
			//ТекстСообщения = НСтр("ru = 'Завершение обновления из внешнего скрипта.'");
			//ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,,ТекстСообщения);
			if(true/*НЕ ПроверитьДоступДляОбновления()*/)
			{
				//ТекстСообщения = НСтр("ru = 'Недостаточно прав для завершения обновления конфигурации.'");
				//ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,,ТекстСообщения);
				//ВызватьИсключение ТекстСообщения;
			}
			//ЗаписатьСтатусОбновления(ИмяАдминистратораОбновления, Ложь, Истина, РезультатОбновления);
		}
		// Получить короткое имя (идентификатор) конфигурации.
		//
		// Возвращаемое значение:
		//   Строка   – короткое имя конфигурации.

		public object КороткоеИмяКонфигурации(/**/)
		{
			//Значение = ОбновлениеКонфигурацииПереопределяемый.КороткоеИмяКонфигурации() + "/";
			/*// Определение редакции конфигурации
*/
			//ПодстрокиВерсии = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Метаданные.Версия, ".");
			if(true/*ПодстрокиВерсии.Количество() > 1*/)
			{
				//Значение = Значение + ПодстрокиВерсии[0] + ПодстрокиВерсии[1] + "/";
			}
			/*// Определение версии платформы
*/
			//СисИнфо = Новый СистемнаяИнформация;
			//ПодстрокиВерсии = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СисИнфо.ВерсияПриложения, ".");
			//Значение = Значение + ПодстрокиВерсии[0] + ПодстрокиВерсии[1] + "/";
			/*СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
		"ОбновлениеКонфигурации", 
		"НастройкиОбновленияКонфигурации"
	);*/
			if(true/*СтруктураНастройки <> Неопределено*/)
			{
				/*// Значение из настроек пользователя
*/
				//ИспользоватьЗначениеНастройки = Ложь;
				//СтруктураНастройки.Свойство("ИспользоватьЗначениеНастройкиКороткоеИмяКонфигурации", ИспользоватьЗначениеНастройки);
				if(true/*ИспользоватьЗначениеНастройки = Истина*/)
				{
					//Значение = СтруктураНастройки.КороткоеИмяКонфигурации;
				}
			}
			return null;
		}
		// Получить адрес веб-сервера поставщика конфигурации, на котором находится
		// информация о доступных обновлениях.
		//
		// Возвращаемое значение:
		//   Строка   – адрес веб-сервера.
		//
		// Пример реализации:
		//
		//	Возврат "localhost";  // локальный веб-сервер для тестирования.
		//

		public object АдресСервераДляПроверкиНаличияОбновления(/**/)
		{
			//Значение			= "downloads.1c.ru";
			/*// Значение по умолчанию
*/
			//ЗначениеПереопределяемогоМодуля = ОбновлениеКонфигурацииПереопределяемый.АдресСервераДляПроверкиНаличияОбновления();
			if(true/*НЕ ПустаяСтрока(ЗначениеПереопределяемогоМодуля)*/)
			{
				/*// Переопределяемое значение
*/
				//Значение = ЗначениеПереопределяемогоМодуля;
			}
			/*СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
	    "ОбновлениеКонфигурации",
	    "НастройкиОбновленияКонфигурации"
	);*/
			if(true/*СтруктураНастройки <> Неопределено*/)
			{
				/*// Значение из настроек пользователя
*/
				//ИспользоватьЗначениеНастройки = Ложь;
				//СтруктураНастройки.Свойство("ИспользоватьЗначениеНастройкиАдресСервераДляПроверкиНаличияОбновления", ИспользоватьЗначениеНастройки);
				if(true/*ИспользоватьЗначениеНастройки = Истина*/)
				{
					//Значение = СтруктураНастройки.АдресСервераДляПроверкиНаличияОбновления;
				}
			}
			return null;
		}

		public object КаталогОбновлений(/**/)
		{
			//Значение = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Метаданные.АдресКаталогаОбновлений);
			/*// Значение по умолчанию
*/
			//ЗначениеПереопределяемогоМодуля = ОбновлениеКонфигурацииПереопределяемый.КаталогОбновлений();
			if(true/*НЕ ПустаяСтрока(ЗначениеПереопределяемогоМодуля)*/)
			{
				/*// Переопределяемое значение
*/
				//Значение = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ЗначениеПереопределяемогоМодуля);
			}
			/*СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
		"ОбновлениеКонфигурации", 
		"НастройкиОбновленияКонфигурации"
	);*/
			if(true/*СтруктураНастройки <> Неопределено*/)
			{
				/*// Значение из настроек пользователя
*/
				//ИспользоватьЗначениеНастройки = Ложь;
				//СтруктураНастройки.Свойство("ИспользоватьЗначениеНастройкиКаталогОбновлений", ИспользоватьЗначениеНастройки);
				if(true/*ИспользоватьЗначениеНастройки = Истина*/)
				{
					//Значение = СтруктураНастройки.КаталогОбновлений;
				}
			}
			return null;
		}

		public object АдресРесурсаДляПроверкиНаличияОбновления(/**/)
		{
			//Значение = "/ipp/ITSREPV/V8Update/Configs/";
			/*// Значение по умолчанию
*/
			//ЗначениеПереопределяемогоМодуля = ОбновлениеКонфигурацииПереопределяемый.АдресРесурсаДляПроверкиНаличияОбновления();
			if(true/*НЕ ПустаяСтрока(ЗначениеПереопределяемогоМодуля)*/)
			{
				/*// Переопределяемое значение
*/
				//Значение = ЗначениеПереопределяемогоМодуля;
			}
			/*СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
		"ОбновлениеКонфигурации",
		"НастройкиОбновленияКонфигурации"
	);*/
			if(true/*СтруктураНастройки <> Неопределено*/)
			{
				/*// Значение из настроек пользователя
*/
				//ИспользоватьЗначениеНастройки = Ложь;
				//СтруктураНастройки.Свойство("ИспользоватьЗначениеНастройкиАдресРесурсаДляПроверкиНаличияОбновления", ИспользоватьЗначениеНастройки);
				if(true/*ИспользоватьЗначениеНастройки = Истина*/)
				{
					//Значение = СтруктураНастройки.АдресРесурсаДляПроверкиНаличияОбновления;
				}
			}
			return null;
		}
		// Возвращает признак успешного обновления конфигурации на основе данных константы настроек.

		public object ОбновлениеКонфигурацииУспешно(/**/)
		{
			if(true/*НЕ ПравоДоступа("Чтение", Метаданные.Константы.СтатусОбновленияКонфигурации)*/)
			{
			}
			//ЗначениеХранилища = Константы.СтатусОбновленияКонфигурации.Получить();
			//Статус = Неопределено;
			if(true/*ЗначениеХранилища <> Неопределено*/)
			{
				//Статус = ЗначениеХранилища.Получить();
			}
			if(true/*Статус = Неопределено*/)
			{
			}
			if(true/*НЕ Статус.ОбновлениеВыполнено ИЛИ 
		(Статус.ИмяАдминистратораОбновления <> ИмяПользователя())*/)
			{
			}
			return null;
		}
		// Устанавливает новое значение в константу настроек обновления
		// соответственно успешности последней попытки обновления конфигурации.

		public void ЗаписатьСтатусОбновления(/*Знач ИмяАдминистратораОбновления = "", Знач ОбновлениеЗапланировано = Ложь,
	Знач ОбновлениеВыполнено = Ложь, Знач РезультатОбновления = Ложь, СообщенияДляЖурналаРегистрации = Неопределено*/)
		{
			//ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
			/*Статус = Новый Структура("ИмяАдминистратораОбновления,
		 |ОбновлениеЗапланировано,
		 |ОбновлениеВыполнено,
		 |РезультатОбновленияКонфигурации",
		 ИмяАдминистратораОбновления,
		 ОбновлениеЗапланировано,
		 ОбновлениеВыполнено,
		 РезультатОбновления);*/
			//Константы.СтатусОбновленияКонфигурации.Установить(Новый ХранилищеЗначения(Статус));
		}
		// Выполняет очистку всех настроек обновления конфигурации.

		public void СброситьСтатусОбновленияКонфигурации(/**/)
		{
			//Константы.СтатусОбновленияКонфигурации.Установить(Новый ХранилищеЗначения(Неопределено));
		}
		// Получает из хранилища общих настроек настройки обновления конфигурации.

		public object ПолучитьСтруктуруНастроекПомощника(/**/)
		{
			//Расписание = Неопределено;
			/*Настройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
		"ОбновлениеКонфигурации", 
		"НастройкиОбновленияКонфигурации"
	);*/
			if(true/*Настройки = Неопределено*/)
			{
				//КоличествоСтарыхНастроек = 0;
			}
			//Настройки = ОбновлениеКонфигурацииКлиентСервер.ПолучитьОбновленныеНастройкиОбновленияКонфигурации(Настройки);
			/*// Если появились новые настройки, то их нужно сохранить
*/
			if(true/*Настройки.Количество() > КоличествоСтарыхНастроек*/)
			{
				//УстановитьПривилегированныйРежим(Истина);
				//ЗаписатьСтруктуруНастроекПомощника(Настройки);
				//УстановитьПривилегированныйРежим(Ложь);
			}
			/*// Если в ранних версиях было сохранено расписание, и еще не отработал обработчик
*/
			/*// обновления ОбновлениеРасписанияПроверкиНаличияОбновления, то...
*/
			if(true/*Настройки <> Неопределено И Настройки.Свойство("РасписаниеПроверкиНаличияОбновления", Расписание) 
		И ТипЗнч(Расписание) = Тип("РасписаниеРегламентногоЗадания")*/)
			{
				//Настройки.РасписаниеПроверкиНаличияОбновления = ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру(Расписание);
			}
			return null;
		}
		// Записывает настройки помощника обновления в хранилище общих настроек.

		public void ЗаписатьСтруктуруНастроекПомощника(/*НастройкиОбновленияКонфигурации, СообщенияДляЖурналаРегистрации = Неопределено*/)
		{
			//ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
			/*ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(
		"ОбновлениеКонфигурации", 
		"НастройкиОбновленияКонфигурации", 
		НастройкиОбновленияКонфигурации
	);*/
		}
		// Проверка доступа к подсистеме ОбновлениеКонфигурации

		public object ПроверитьДоступДляОбновления(/**/)
		{
			return null;
		}

		public object ПроверитьДоступДляПроверкиОбновления(/**/)
		{
			/*// Проверка обновлений доступна для полных прав
*/
			return null;
		}
		// Возвращает имя события для записи журнала регистрации.

		public object СобытиеЖурналаРегистрации(/**/)
		{
			//Возврат НСтр("ru = 'Обновление конфигурации'");
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ОБРАБОТЧИКИ ОБНОВЛЕНИЯ ИНФОРМАЦИОННОЙ БАЗЫ
		// Добавляет в список Обработчики процедуры-обработчики обновления,
		// необходимые данной подсистеме.
		//
		// Параметры:
		//   Обработчики - ТаблицаЗначений - см. описание функции НоваяТаблицаОбработчиковОбновления
		//                                   общего модуля ОбновлениеИнформационнойБазы.
		//

		public void ЗарегистрироватьОбработчикиОбновления(/*Обработчики*/)
		{
			//Обработчик = Обработчики.Добавить();
			//Обработчик.Версия = "1.1.1.8";
			//Обработчик.Процедура = "ОбновлениеКонфигурации.ОбновлениеРасписанияПроверкиНаличияОбновления";
		}
		// Процедура-обработчик обновления.
		//

		public void ОбновлениеРасписанияПроверкиНаличияОбновления(/**/)
		{
			//Расписание = Неопределено;
			//СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
		}
	}
}
